web.xml配置

小课堂

分享人:王蒙

目录

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

当我们去启动一个WEB项目时,容器包括(Jetty、Tomcat等)首先会读取项目web.xml配置文件里的配置,当这一步骤没有出错并且完成之后,项目才能正常地被启动起来。

2.知识剖析

2.1 web启动加载过程

web项目启动时,容器首先在web.xml中读取context-param和listener,然后创建一个ServletContext,作为全局共享信息存储,将context-param中的name和value存入。然后创建listener实例,listener继承了ContextLoader类,由ContextLoader加载上下文(父子),然后容器继续读取filter,实例化过滤器。然后读取servlet,根据load-on-startup的值(整数值)来决定是即时实例化还是第一次请求时实例化。

2.2 web.xml标签

web-app

部署描述符的根元素是web-app。DTD文件规定web-app元素的子元素的语法如下: web-app (icon?, display-name?, description?, distributable?, context-param*, filter*, filter-mapping*, listener*, servlet*, servlet-mapping*, session-config?, mime-mapping*, welcome-file-list?, error-page*, taglib*, resource-env-ref*, resource-ref*, security-constraint*, login-config?, security-role*,env-entry*, ejb-ref*, ejb-local-ref*)> 

问号(?)表示子元素是可选的,而且只能出现一次。星号(*)表示子元素可在部署描述符中出现零次或多次。

display-name

web应用的名称,可以在容器的管理系统中查看

distributable

告诉servlet/JSP容器,Web容器中部署的应用程序适合在分布式环境下运行。

context-param

含有一对参数名和参数值,用作应用的Servlet上下文初始化参数,参数名在整个Web应用中必须是惟一的,在web应用的整个生命周期中上下文初始化参数都存在,任意的Servlet和jsp都可以随时随地访问它。

session-config

用于设置容器的session参数。

listener

为web应用程序定义监听器,监听器用来监听各种事件。

常用的Web事件接口有如下几个: ServletContextListener:用于监听Web应用的启动和关闭; ServletContextAttributeListener:用于监听ServletContext范围(application)内属性的改变; ServletRequestListener:用于监听用户的请求; ServletRequestAttributeListener:用于监听ServletRequest范围(request)内属性的改变; HttpSessionListener:用于监听用户session的开始和结束; HttpSessionAttributeListener:用于监听HttpSession范围(session)内属性的改变。

filter

filter可认为是Servlet的一种“加强版”,主要用于对用户请求request进行预处理,也可以对response进行后处理,是个典型的处理链。使用filter的完整流程是:filter对用户请求HttpServletRequest进行预处理,接着将请求交给Servlet进行处理并生成响应,最后filter再对服务器响应HttpServletResponse进行后处理。filter与Servlet具有完全相同的生命周期,且filter也可以通过init-param来配置初始化参数,获取filter的初始化参数则使用filterConfig的getInitParameter()。

filter在web.xml中配置,可包含filter-name、filter-class、init-param等子元素

filter-mapping

用来声明Web应用中的过滤器映射,过滤器被映射到一个servlet或一个URL 模式。这个过滤器的filter和filter-mapping必须具有相同的filter-name,指定该filter所拦截的URL。过滤是按照部署描述符的filter-mapping出现的顺序执行的。

servlet

运行在服务器端的程序,用于处理及响应客户的请求。

servlet-mapping

将URL模式映射到某个Servlet,即该Servlet处理的URL。

error-page

设置系统错误时返回的页面,包括error-code和location。

welcome-file

用来指定首页文件名称。welcome-file-list元素可以包含一个或多个welcome-file子元素。如果在第一个welcome-file元素中没有找到指定的文件,Web容器就会尝试显示第二个,以此类推。

3.常见问题

容器加载过程

4.解决方案

5.编码实战

6.扩展思考

Servlet 3.0开始支持用@WebServlet注解来代替web.xml里的配置servlet的作用

7.参考文献

参考一:spring mvc教程

参考二:ServletContext作用功能

8.更多讨论

不使用web.xml的webapp是什么样的?

鸣谢

感谢大家观看

BY:王蒙

Contact GitHub API Training Shop Blog About © 2016 GitHub, Inc. Terms Privacy Security Status He